Applications running in contemporary computing systems generate data and utilize data that is respectively stored in and retrieved from the computing system's file system. The tasks these applications are called on to perform are placing greater demands on the interactions between such applications and file systems. For example, in the context of a data center, applications are being called upon to process enormous and ever-growing amounts of data with operations that rely on file-system interactions.
Existing approaches to providing file-system services to applications may not be optimized to address current demand trends. Traditionally, the file system resides within the computing system's kernel, close to the underlying hardware where data is physically stored and from which it is retrieved. Applications can accomplish storage and retrieval of data in and from a file system, among other operations, through the constraints of system calls provided by the computing system's kernel.
An additional layer of abstraction is added for some computing systems in terms of a Virtual File System (VFS), also known as a Virtual Filesystem Switch. The VFS can provide an interface between the kernel and file system engaging the actual hardware. Providing such an interface may allow an application to interact with different kinds of file systems, allowing, for example, transparent access to local and networked storage devices. A VFS may also provide a bridge between the kernels of different operating systems.
Some existing approaches remove aspects of a file system from the kernel, placing those aspects in user space. Although much of the file space has been removed to the user space, existing examples of such approaches continue to send both requests from the application and responses from the file system through the kernel space. In so doing, such approaches utilize the existing infrastructure provided by the kernel to support interactions between an application and a file system.